
var path = require("path");
var fs = require("fs");
var fsp = require("fs/promises");

var site = path.join(__dirname, "../../site");  // 配置站点路径
// var site = path.join(__dirname, "../site");  // 配置站点路径

function setSite(url) {  // 自定义站点路径
    site = url;
}

function getSite() {  // 自定义站点路径
    return site;
}

async function render(pathname, res) {

    // 对应url地址栏中路径部分 展示页面

    //(1) 默认从site文件夹中查找文件(site默认站点)    
    //(2) 不同类型的文件 输出不同的Content-Type格式
    //     分析: 不同类型的文件,后缀名不同 .css  .js .html .json .png .jpg .jpeg .gif
    var isExist = fs.existsSync(path.join(site, pathname)); //站点中是否存在文件/文件夹

    if (isExist) { // 传入的路径可能是站点中的文件 / 文件夹

        var info = fs.statSync(path.join(site, pathname)); // 获取路径信息 
        if (info.isFile()) {


            var ext = path.extname(pathname); // 获取地址栏路径部分的后缀名
            // console.log(ext);
            if (ext) {
                var typeEnum = {
                    ".html": "text/html;charset=utf-8",
                    ".css": "text/css;charset=utf-8",
                    ".js": "text/javascript;charset=utf-8",
                    ".json": "text/json;charset=utf-8",
                    ".jpg": "image/jpg",
                    ".jpeg": "image/jpeg",
                    ".png": "image/png",
                    ".gif": "image/gif",
                    ".woff2": "application/octet-stream",
                }

                if (Object.keys(typeEnum).includes(ext)) {
                    res.writeHead(200, {
                        "Content-Type": typeEnum[ext],
                    })
                }

            }

            var content = await fsp.readFile(path.join(site, pathname));
            // console.log(1111, content);

            res.write(content);

            res.end();  // 请求处理结束,返回响应的结果 (并关闭响应)   => res.end() 不建议重复调用
        } else if (info.isDirectory()) {
            // res.writeHead(200, {
            //     "Content-Type": "text/plain;charset=utf-8",
            // })
            // res.end("访问的是站点下文件夹,默认访问文件夹的主页面")
            pathname = path.join(pathname, "/index.html");
            render(pathname, res);
        }
    }

    // else {
    //     res.writeHead(404, {
    //         "Content-Type": "text/plain;charset=utf-8",
    //     })
    //     res.end("访问路径不存在:404");
    // }

}

module.exports = {
    setSite,
    getSite,
    render,
}